# for i in range(1,10):
#     for j in range(1,i+1):
#         #print(j, '*', i, '=', j * i, end=' ')
#         #print("%s*%s=%s"%(j,i,j*i),end=' ')
#         #print("{0}*{1}={2}".format(j,i,j*i),end=' ')
#         print(f"{j}*{i}={j*i}",end=' ')
#     print('\n')

# f-string 自定义格式
# < 表示左对齐 其中的13表示一共13位
# > 表示右对齐
# ^ 表示居中对齐
s = 3.1415926
print(f"{s:<13}")
print(f"{s:>13}")
print(f"{s:^13}")

# 数字符号相关格式
# +：负数前加负号（-），正数前加正号（+）
# -：负数前加负号（-），正数前不加任何符号
# 空格：负数前加负号（-），正数前加一个空格
print(f"{123:+}")
print(f"{-123:+}")
print(f"{123:-}")
print(f"{-123:-}")
print(f"{123: }")
print(f"{-123: }")

# 数字显示方式
# #0b 表示二进制
print(f"{123:#0b}") # 输出 0b1111011
# #0o 表示八进制
print(f"{123:#0o}") # 输出 0o173
# #0x 表示小写的十六进制
# #0X 表示大写的十六进制
print(f"{123:#0x}") # 输出 0x7b
print(f"{123:#0X}") # 输出 0X7B

# 宽度与经度
a = 123.456
# 表示一共8位，保留两位小数，不足八位前面用空格替换
print(f"a is {a:8.2f}")
# 不足八位，前面补0
print(f"a is {a:08.2f}") # 输出 a is 00123.46
# 科学计数法
print(f"a is {a:8.2e}")  # 输出 a is 1.23e+02
# 百分制 %
print(f"a is {a:8.2%}") # 输出 a is 12345.60%
# 科学计数法
print(f"a is {a:8.2g}") # 输出 a is  1.2e+02

# 字符串
s = "hello"
# 8s表示8位，不足用空格补
print(f"s is {s:8s}")
# 8.3s表示长度是8位，取其中3位
print(f"s is {s:8.3s}") # 输出 s is hel

# 千分位分隔符
d = 1234567890.98765
# ,表示千分位用逗号分割
print(f"d is {d:,f}") # 输出 d is 1,234,567,890.987650
print(f"d is {d:_f}") # 输出 d is 1_234_567_890.987650

# 转换成二进制 八进制 十六进制
b = 1234567890
print(f"b is {b:_b}") # 输出 b is 100_1001_1001_0110_0000_0010_1101_0010
print(f"b is {b:_o}")
print(f"b is {b:_d}")
print(f"b is {b:_x}")

